import javax.swing.JLabel;

public class Cola {
	/*
	 * Posicionamos los puntos donde seran Asentados los clientes, en las
	 * oficinas.
	 */
	public int PosX_Caja[] = { 513, 488, 463, 438, 413, 388, 363, 338, 313, 288 };// 10
	public int PosY_Caja[] = { 80, 80, 80, 80, 80, 80, 80, 80, 80, 80 };// 10
	public int PosX_TomadorApuesta[] = { 513, 488, 463, 438, 413, 388, 363, 338,
			313, 288 };// 10
	public int PosY_TomadorApuesta[] = { 430, 430, 430, 430, 430, 430, 430, 430,
			430, 430 };// 10

	/* Cantidad de puestos en cada cola. */
	Cliente[] clienteTA = new Cliente[10];
	Cliente[] clienteC = new Cliente[10];

	JLabel fondo;
	Histograma histo;
	long respControl;

	int[] numAleat = new int[2];
	boolean[] noEnc = new boolean[2];
	boolean[] controlCliente = new boolean[2];
	int[] posX = new int[2];
	int[] posY = new int[2];
	Cliente[] cliente = new Cliente[2];

	/** ************************************************************************* */

	public Cola(JLabel f, Histograma h) {
		fondo = f;
		histo = h;

		for (int i = 0; i < cliente.length; i++) {
			cliente[i] = new Cliente();
			posX[i] = 30;
			posY[i] = 30;
			noEnc[i] = false;
		}

		numAleat[0] = 0;
		numAleat[1] = 0;
	}

	public void EstadoPuestoInicial(int cola, int cantCli) {
		histo.EstadoPuestoInicial(cola, cantCli);
	}

	public void PosicionarPuestos(int cola) {
		switch (cola) {
		case 0:
			for (int i = 0; i < 10; i++) {
				clienteTA[i] = new Cliente();
				if (!histo.estadoPuesto(0, i)) {
					clienteTA[i].setLocation(PosX_TomadorApuesta[i],
							PosY_TomadorApuesta[i]);
					fondo.add(clienteTA[i]);
				}
			}
			break;
		case 1:
			for (int i = 0; i < 10; i++) {
				clienteC[i] = new Cliente();
				if (!histo.estadoPuesto(1, i)) {
					clienteC[i].setLocation(PosX_Caja[i], PosY_Caja[i]);
					fondo.add(clienteC[i]);
				}
			}
			break;
		default:
			System.out.println("Se listo una cola no existente");
		}
		fondo.repaint();
	}

	
	public int buscarVacio(int co) {
		int cola = co;
		int i = 0;
		int resp = 0;
		boolean bandera = true;
		int vacio = 0;

		if (cola == 0) {
			vacio = recorridoVacio(0);
			if (vacio > 0) {
				resp = PosX_TomadorApuesta[vacio + 1];
				histo.fijarEstadoPuesto(0, vacio + 1, true);
			} else {
				while (i < 10 && bandera == true) {
					if (histo.estadoPuesto(0, i) == true) {
						resp = PosX_TomadorApuesta[i];
						histo.fijarEstadoPuesto(0, i, true);
						bandera = false;
					}
					i++;
				}
			}
		} else {
			vacio = recorridoVacio(1);
			if (vacio > 0) {
				resp = PosX_Caja[vacio + 1];
				histo.fijarEstadoPuesto(1, vacio + 1, true);
			} else {
				while (i < 10 && bandera == true) {
					if (histo.estadoPuesto(1, i) == true) {
						resp = PosX_Caja[i];
						histo.fijarEstadoPuesto(1, i, true);
						bandera = false;
					}
					i++;
				}
			}
		}

		return resp;
	}

	public int recorridoVacio(int coli) {
		int colita = coli;
		int j = 9;
		boolean ban = true;
		int res = 0;
		if (colita == 0) {
			while (j >= 0 && ban == true) {
				if (histo.estadoPuesto(0, j) == false) {
					res = j;
					ban = false;
				}
				j--;
			}

		} else {
			while (j >= 0 && ban == true) {
				if (histo.estadoPuesto(1, j) == false) {
					res = j;
					ban = false;
				}
				j--;
			}

		}

		if (res == 9)
			res = 0;
		return res;
	}

	public int marcarVacio(int cola, int posx) {
		int i = 0;
		boolean bandera = true;
		int resp = 0;

		if (cola == 0) {
			while (i < 10 && bandera == true) {
				if (posx + 1 == PosX_TomadorApuesta[i]) {
					bandera = false;
					resp = i;
				}
				i++;
			}
		} else {
			while (i < 10 && bandera == true) {
				if (posx + 1 == PosX_Caja[i]) {
					bandera = false;
					resp = i;
				}
				i++;
			}
		}
		return resp;
	}

}